home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Demos / A.D. Software / OOFILE / promo.txt < prev   
Text File  |  1996-04-02  |  7KB  |  230 lines

  1. WHAT IS OOFILE? 
  2. OOFILE exists to make life easy for c++ programmers who want to embed a fast
  3. database and particularly those using an application framework, or hooking up to
  4. the World Wide Web.
  5.  
  6. OOFILE is a c++ framework. It features replaceable database engines with the
  7. current release using Faircom's c-tree Plus ISAM engine. This gives us
  8. royalty-free databases portable across Mac, MS Windows and Unix.
  9.  
  10.  
  11. WHO IS OUR MARKET
  12. 1) c++ developers (or wannabees) wanting an embedded database for writing
  13. applications, especially those working in combination with an application
  14. framework such as zApp, MFC or PowerPlant.
  15.  
  16. 2) World Wide Web developers seeking a database and report-writer combination to
  17. create web pages in response to queries, searching hundreds of thousands of
  18. records (at least).
  19.  
  20. 3) c-tree users who want to make life a LOT easier 
  21. (a separate feature sheet is available on request,
  22.  which lists the benefits OOFILE adds to c-tree).
  23.  
  24.  
  25. Design Goals
  26. - everything is native C++ with no (database) preprocessor required
  27.  
  28. - keep syntax very simple, familiar to 4GL users and not needing c++ gurus
  29.  
  30. - safe syntax that makes it hard to do the wrong thing by mistake, making
  31.   maximum use of c++ compiler type-checking, built in debugging modes and 
  32.   third-party tools such as SmartHeap
  33.  
  34. - implement with a choice of database engines for the backend (imagine using 
  35.   ODBC to pull corporate data into your fast c-tree-based OOFILE EIS system)
  36.  
  37. - integrate with a range of common application frameworks
  38.  
  39. - provide additional classes for managing gui interfaces to help construct 
  40.   typical database applications, where features are not commonly part of 
  41.   application frameworks
  42.  
  43. - use a widely available level of c++ (no RTTI, templates or exception handling)
  44.  
  45.  
  46.  
  47. BASIC PHILOSOPHY
  48. Object-oriented design is mainly about classes, not individual objects.
  49.  
  50. OOFILE is similar. Most of the time you model your data in terms of classes. You
  51. do NOT declare individual objects (unlike the ODMG model).
  52.  
  53. Consider a database from the user's view. They generally see collections of data
  54. and edit or interact with individual records from the collection. The user
  55. doesn't care about individual object identity, they don't create symbolic names
  56. for particular objects. These things may be important inside the database, but
  57. do not need to be exposed.
  58.  
  59.  
  60. SOME SIMPLE EXAMPLES
  61. Note: for more examples, look on
  62. http://www.highway1.com.au/adsoftware/oofile.html
  63. or
  64. ftp://ftp.highway1.com.au/pub/adsoftware/oofile/
  65.  
  66.  
  67. DECLARING SIMPLE TABLES
  68. This example declares a small persistent class with three fields and two
  69. indices for fast searching on the fields.
  70.  
  71. DECLARE_CLASS(dbPeople)
  72.    dbChar    Name, Address;
  73.    dbLong    Salary;
  74.  
  75.    dbPeople() : Name(40, "Name", kIndexNoDups), 
  76.               Address(255, "Address"), 
  77.               Salary("Salary", kIndexed)
  78.    {};
  79. };
  80.  
  81. Note that the constructors also specify the field name strings. These
  82. are optional, but are of great benefit when writing query and
  83. report-writer logic or when constructing a database schema that should
  84. be readable by others.
  85.  
  86.  
  87. SOME OTHER FEATURES
  88. - Derived fields, either specified as a combination of existing fields or   
  89.   user-calculated (combined fields in v1.2, user-calc due in 1.3)
  90.  
  91. - User-defined relations  (due in 1.3)
  92.  
  93. - keyword indexing (due in 1.3)
  94.  
  95. - phonetic indexing (due in 1.3)
  96.  
  97. - inbuilt report-writer
  98.  
  99.  
  100. RELATIONSHIPS
  101. One of the big features of an OODBMS is modelling the relationships between
  102. objects. OOFILE allows you to model relationships in a pure OODBMS sense, using
  103. object identifiers, or explicitly perform runtime joins over database fields.
  104. There are a number of syntaxes available to establish relationships. 
  105.  
  106. The following complete program shows a relationship using direct pointers, but 
  107. OOFILE can also manage relationships with join fields. Joins might be more 
  108. appropriate when adapting an existing database.
  109.  
  110. DECLARE_REF(dbPatients)
  111. DECLARE_SET(dbVisits)
  112.  
  113. DECLARE_CLASS(dbPatients)
  114.     dbChar        LastName, Othernames;
  115.     dbVisitsSet    Visits;
  116.     dbLong        Salary;
  117.  
  118.     dbPatients() :
  119.                 LastName(40, "Last Name", kIndexed),
  120.                 Othernames(80, "Other names", kIndexed),
  121.                 Salary("Salary", kIndexed)
  122.     {
  123.         Visits.propagateRelatedDeletes();
  124.     };
  125. };
  126.  
  127.  
  128. DECLARE_CLASS(dbVisits)
  129.     dbPatientsRef    Patient;
  130.     dbDate        VisitDate;
  131.     dbChar        Why;
  132.     dbVisits() : 
  133.                 VisitDate("VisitDate", kIndexed),
  134.                 Why(200, "Reason for Visit", kIndexCompress)
  135.     {};
  136. };
  137.  
  138. // declaring the concrete variables
  139. dbConnect_ctree   theDatabase;
  140. dbPatients        Patients;
  141. dbVisits          Visits;
  142. dbRelationship(Patients.Visits, Visits.Patient);
  143.  
  144. // small sample program to create a parent and child record and print
  145. // the database on the console
  146. int main() {
  147.     theDatabase.newConnection("PROMO.db");
  148.     Patients.newRecord();
  149.     Patients.LastName = "Dent";
  150.     Patients.Visits->newRecord();
  151.     Patients.Visits->VisitDate = "12th May";
  152.     Patients.Visits->Why = "Flu";
  153.     Patients.saveRecord();
  154.     cout << theDatabase;
  155.     return 0;
  156. }
  157.  
  158. APPLICATION FRAMEWORKS AND OOFILE
  159. GUI Integration classes have been released for PowerPlant (Mac) and are under
  160. development for zApp & MFC with more frameworks to follow. A "non-intrusive"
  161. approach has been taken of providing helper classes and instructions that let
  162. you incorporate OOFILE use into an existing program.
  163.  
  164. These helper classes include subclasses of the native edit fields, that
  165. store data directly into the database. Depending on your framework,
  166. other classes are added for displaying lists of records, managing
  167. multiple page input forms and similar business application functions.
  168.  
  169. For Macintosh users, the popular AppMaker code generator has been enhanced to
  170. generate OOFILE applications. You can go from drawing your interface
  171. to a complete working database application, without writing code. 
  172.  
  173. OOFILE demos are available online and on the CodeWarrior, AppMaker and
  174. Apprentice CD's.
  175.  
  176. TEST PLATFORMS in-house
  177. c-tree+ v6.4B & 6.5A
  178.  
  179. Mac 
  180. - CodeWarrior CW8
  181. - Symantec 8.03
  182.  
  183. MS Windows
  184. - Borland c++ v4.5p3
  185.  
  186. SunOS 4.1.3
  187. - g++ v2.7
  188.  
  189.  
  190. Contact Details
  191.  
  192. Australian Distributors
  193. Techflow Pty Ltd
  194. 5/17 Mooramba Road
  195. Dee Why  NSW 2099
  196. Phone  (02) 9971 4311
  197. Fax  (02) 9982 3623
  198. sales@techflow.com.au
  199.  
  200.  
  201. European Distributors
  202. Full Moon Software
  203. PO Box 862, MAIDENHEAD, Berks SL6 0QJ UK
  204. ph: +44 1628 660242 fax: +44 1628 666084 
  205. http://www.u-net.com/~moonweb/
  206. sales@fullmoon.com
  207.  
  208.  
  209. US Distributors
  210. Xplain Corporation, through the MacTech Mail Order Store
  211. productinfo@xplain.com
  212. http://www.mactech.com
  213.  
  214.  
  215. OOFILE Technical queries, and other international sales
  216. Andy Dent BSc MACS
  217. President and OOFILE Product Architect
  218. A.D. Software
  219. 94 Bermuda Drive
  220. Ballajura, Western Australia  6066
  221.  
  222. Phone/Fax +61-9-249-2719
  223. CompuServe:  100033,3241
  224. Internet:    dent@highway1.com.au
  225.              ftp://ftp.highway1.com.au/pub/adsoftware/
  226.              http://www.highway1.com.au/adsoftware/
  227.  
  228.  
  229. OOFILE - “the cross-platform OODBMS that speaks c++"
  230.